package icontrolv2

class FacturarController {

    def index() {
        def proyecto = Proyecto.get(params.proyectoId)
        def cliente = Cliente.get(params.clienteId)
        def fechaEmision = new Date()
        def formaPago = new FormaPago()

        [facturaInstance: new Factura(params), proyecto:proyecto, cliente:cliente, fechaEmision:fechaEmision, formaPago:formaPago]
    }

    def save() {
        def cliente = Cliente.get(params.cliente.id)
        def proyecto = Proyecto.get(params.proyecto.id)
        def formaPago = FormaPago.get(params.formaPago.id)
        def factura = new Factura()

        factura.setTotal(params.int('total'))
        factura.setIva(params.int('iva'))
        factura.setFechaEmision(new Date())
        factura.setNombre(cliente.getNombre())
        factura.setComuna(params.comuna)
        factura.setDireccion(params.direccion)
        factura.setProyecto(proyecto)
        factura.setCliente(cliente)
        factura.setFormaPago(formaPago)

        if(factura.save(flush: true)) {
            flash.message = message(code: 'default.created.message', args: [message(code: 'factura.label', default: 'Factura'), factura.getId()])
            redirect(action:"lista")
        }

        [facturaInstance: factura]
    }

    def lista() {
        params.max = Math.min(params.max ? params.int('max') : 10, 100)
        [facturaInstanceList: Factura.list(params), facturaInstanceTotal: Factura.count()]
    }

    def crearArchivoFactura() {
        def factura = Factura.get(params.id)
        def cliente = factura.getCliente()
        def proyecto = factura.getProyecto()
        def formaPago = factura.getFormaPago()
        def fecha = new Date()

        def facturaService = new FacturacionService(proyecto)
        facturaService.setFolio(factura.getId() + 10000)
        facturaService.setFechaEmision(fecha.getDay() + "/" + fecha.getMonth() + "/" + "13")
        facturaService.setRutCliente(cliente.getRut() + "-" + cliente.getDv())
        facturaService.setRazonSocialCliente(cliente.getNombre())
        facturaService.setDireccion(cliente.getDirecciones().toList().get(0).getDireccion())
        facturaService.setComuna(factura.getComuna())
        facturaService.setCiudad("Santiago")
        facturaService.setFechaVencimiento(fecha.getDay() + "/" + fecha.getMonth() + "/" + "13")
        facturaService.setFormaPago(formaPago.getNombre())
        facturaService.setNeto(factura.getNeto())
        facturaService.setDescuento(0.00)
        facturaService.setSubtotal(factura.getNeto())
        facturaService.setIva(factura.getIva())
        facturaService.setTotal(factura.getTotal())

        facturaService.escribirArchivo()

        flash.message = "El archivo se ha creado"
    }
}
